// TcpClient.h
#ifndef TCPCLIENT_H
#define TCPCLIENT_H

#include <QObject>
#include <QTcpSocket>
#include <QJsonObject>
#include <QJsonDocument>

class TcpClient : public QObject
{
    Q_OBJECT
public:
    explicit TcpClient(QObject *parent = nullptr);
    ~TcpClient();// 连接服务器
    void connectToServer(const QString& host, quint16 port);
    // 发送数据
    void sendData(const QJsonObject& data);
    // 断开连接
    void disconnectFromServer();// 获取连接状态
    bool isConnected() const;

signals:
    // 连接成功信号
    void connected();
    // 断开连接信号
    void disconnected();
    // 接收到数据信号
    void dataReceived(const QJsonObject& data);
    // 错误信号
    void error(const QString& errorMessage);

private slots:
    void handleConnected();
    void handleDisconnected();
    void handleReadyRead();
    void handleError(QAbstractSocket::SocketError socketError);

private:
    QTcpSocket* m_socket;
};

#endif // TCPCLIENT_H
